#include "bubblesort.h"
#include "swap.h"
#include <stddef.h>

BubbleSort::BubbleSort()
{

}


void bubblesort1(int *array, int length)
{
    if (array==NULL)
        return;
    for(int i=0;i<length-1;++i)    {
        for(int j=i+1;j<length-1;++j){
            if(array[i]>array[j])
                swap(array,i,j);
        }
    }
}

void bubblesort2(int *array, int length)
{
    if (array==NULL)
        return;
    for(int i=0;i<length-1;++i)
    {
        for(int j=length-1;j>i;--j)
            if(array[j]<array[j-1])/* 若前者大于后者（注意这里与上一算法的差异）*/
                swap(array,j-1,j);
    }
}

void bubblesort3(int *array, int length)
{
    if (array==NULL)
        return;
    bool flag=true;
    for(int i=0;i<length-1 && flag;++i){/* 若flag为true说明有过数据交换，否则停止循环 */
        flag=false;
        for(int j=length-1;j>i;--j)
            if(array[j]<array[j-1]){
                swap(array,j-1,j);
                flag=true;
            }
    }
}
